﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using University.Workshop.Business;

namespace University.Workshop.Presenters.BackUp
{
    public class PresenterBackUp
    {
        private IBackUpView view;
        public PresenterBackUp(IBackUpView View)
        {
            view = View;
            view.BackUpName = DateTime.Now.ToString("ddMMyyHHmmss");
            view.BackUpUbication = Path.Combine("C:/", "BackUps");
        }

        public void CreateBackUp()
        {
            try
            {
                if (ManagerBackUp.ExistBackUp(Path.Combine(view.BackUpUbication, view.BackUpName)))
                {
                    if (
                        view.MessageConfirmation(
                            "La Copia de respaldo que desea crear ya existe en la carpeta seleccionada desea reemplazar la existente?"))
                        ManagerBackUp.CreateBackUp(view.BackUpUbication, view.BackUpName);
                }
                else
                    ManagerBackUp.CreateBackUp(view.BackUpUbication, view.BackUpName);
                view.SystemMessage("La copia de respaldo fue creada satisfactoriamente.");
            }
            catch(Exception ex)
            {
                view.ErrorMessage("Ocurrio un error en la creacion del Backup:"+ex.Message);
            }
        }

        public void MakeRestore()
        {
            try
            {
                if (ManagerBackUp.ExistDatabase())
                {
                    if (
                        view.MessageConfirmation(
                            "Los datos existentes seran reemplazados por los existentes en la copia de reslado. Desea Continuar?"))
                        ManagerBackUp.MakeBackUp(view.RestoreUbication);

                }
                else
                    ManagerBackUp.MakeBackUp(view.RestoreUbication);
                view.SystemMessage("La base de datos fue restaurada exitosamente.");
            }
            catch(Exception ex)
            {
                view.ErrorMessage("Ocurrio un error en la restauracion de la base de datos.");
            }
        }
    }
}
